import random
import json
from datetime import datetime, timedelta

#设置销售数据
num_days = 30
provinces = ['北京', '上海', '广东', '江苏', '浙江', '重庆', '陕西']
code = "ABCDEFGHIJKLMNOPQRSTUVWXYZ012346789"
start_date1 = datetime(2024, 9, 1) # datetime方法创建日期，从24年9月1日开始
start_date2 = datetime(2024, 10, 1)
ID = ''

def generate_order_id():
    return '-'.join(''.join(random.choice(code) for _ in range(5)) for _ in range(5))#设置格式，join连接字符串
# 随机订单ID，格式为：ABCDE-FGHIJ-KLMNO-PQRST-UWXYZ，其中每个部分都是由 5 个随机字符组成，部分之间用 '-' 分隔。

def generate_sales_data(start_date):
    sales_data = []
    for day in range(num_days):#生成文本文件的销售数据
        date = start_date + timedelta(days=day)#timedelta用于表示两个日期或时间之间的差异。它可以用来进行日期和时间的加减操作。
        sales_record = {"日期": date.strftime("%Y-%m-%d"),#用于将日期对象格式化为“年-月-日”格式的字符串。
                    "订单id": generate_order_id(),
                    "销售额": round(random.uniform(100, 3000)), #round()函数对random生成的浮点数进行四舍五入，返回一个整数（=randint）
                    "销售省份": random.choice(provinces)
            }
        sales_data.append(sales_record)#append添加
    return sales_data


if __name__ == '__main__':
    sales_data1 = generate_sales_data(start_date1)
    sales_data2 = generate_sales_data(start_date2)
    with open('D:/Data_EX/数据分析.txt', 'w', encoding='utf-8') as file:#写文本文件
        for record in sales_data1:
            file.write(','.join(f"{value}" for value in record.values()) + '\n') #只提取键值对中的值

    # JSON格式
    with open('D:/Data_EX/数据分析json.txt', 'w', encoding='utf-8') as file:
        for record in sales_data2:
            json.dump(record, file, ensure_ascii=False) # 加ensure_ascii=False用于保留中文字符，否则转化为ascii码
            file.write('\n')  # 每条记录后换行
